perm filename LS2V4P.SAI[CRE,BGB] blob sn#101518 filedate 1974-05-31 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00008 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	BEGIN "LS2V4P"
C00003 00003	α LANDMARK POINTS POINTS
C00004 00004	α PERCEIVED ANGLES AT EACH OF TWO CAMERAS
C00005 00005		PHIPSI(QANG[1,1],QANG[4,1],QANG[2,1])
C00007 00006		PHIPSI(QANG[1,1],QANG[5,1],QANG[3,1])
C00008 00007		PHIPSI(QANG[1,2],QANG[4,2],QANG[2,2])
C00009 00008		PHIPSI(QANG[1,2],QANG[5,2],QANG[3,2])
C00010 ENDMK
C⊗;
BEGIN "LS2V4P"
	REQUIRE "ABBREV[SYS,BGB]" SOURCE_FILE;
	REQUIRE "DPYIII[SYS,BGB]" SOURCE_FILE;
	SAFE INTEGER ARRAY DPYBUF[0:1000];

	REAL ARRAY XWC,YWC,ZWC[1:8];
	REAL ARRAY CX,CY,CZ[1:2];

	REAL ARRAY QCOS[1:6,1:2];
	REAL ARRAY QSIN[1:6,1:2];
	REAL ARRAY QANG[1:6,1:2];

	ITG I,J,K,L;
	REAL SCALE;
	REAL S1,S2,R1,R2,W1,W2,A1,A2;

	REAL PHI,PSI;

SUBR PHIPSI (REAL A,B,C);
BEGIN "PHIPSI"
	REAL RAD;
	RAD ← SQRT(COS(C)↑2 - 2*COS(A)*COS(B)*COS(C) + COS(B)↑2);
	PHI ← ACOS(SIN(A)*COS(B)/RAD);
	PSI ← ACOS(RAD/SIN(A));
END "PHIPSI";

α LANDMARK POINTS POINTS;
	XWC[1]←-5;	YWC[1]←+0.5;	ZWC[1]←0;
	XWC[2]←-5;	YWC[2]←-0.5;	ZWC[2]←0;
	XWC[3]←-6;	YWC[3]←+0.6;	ZWC[3]←1;
	XWC[4]←-7;	YWC[4]←-0.4;	ZWC[4]←2.3;

α CAMERA LOCII (TO BE FOUND);
	CX[1]←7;	CY[1]← 2.0;	CZ[1]← 0.0;
	CX[2]←2;	CY[2]←-2.3;	CZ[2]←-1.5;

	XWC[5]←CX[1];	YWC[5]←CY[1];
	XWC[6]←CX[2];	YWC[6]←CY[2];

α PERCEIVED ANGLES AT EACH OF TWO CAMERAS;
	FOR L←1,2 DO 
BEGIN 	K←0;
	FOR I←1 THRU 3 DO
	FOR J←I+1 THRU 4 DO
	QCOS[K←K+1,L] ←
	((XWC[I]-CX[L])*(XWC[J]-CX[L])
	+(YWC[I]-CY[L])*(YWC[J]-CY[L])
	+(ZWC[I]-CZ[L])*(ZWC[J]-CZ[L])) /
	(SQRT((XWC[I]-CX[L])↑2+(YWC[I]-CY[L])↑2+(ZWC[I]-CZ[L])↑2)*
	 SQRT((XWC[J]-CX[L])↑2+(YWC[J]-CY[L])↑2+(ZWC[J]-CZ[L])↑2));
END;

	FOR L←1,2 DO
	FOR I←1 THRU 6 DO
	⊂ QSIN[I,L] ← SQRT(1-QCOS[I,L]↑2);
	  QANG[I,L] ← ACOS(QCOS[I,L]);⊃;

	A1 ← QANG[1,1];
	A2 ← QANG[1,2];

	R1 ← 0.5/QSIN[1,1];
	R2 ← 0.5/QSIN[1,2];

	S1 ← R1*QCOS[1,1];
	S2 ← R2*QCOS[1,2];

	PHIPSI(QANG[1,1],QANG[4,1],QANG[2,1]);
	PHI ← PHI - A1/2;
	SCALE ← 35;
	DPYSET(DPYBUF);
	AIVECT(0,30);AVECT(0,0);
AVECT(350,0);AVECT(0,0);
FOR I←1 THRU 10 DO
⊂ AVECT(I*35,0);AVECT(I*35,20);AVECT(I*35,0);⊃;
DPYOUT(0);

BEGIN
	REAL DW,DX,DY,DZ,XX,ZZ,KK,W,W0,XXOLD;
	DX ← -COS(PHI);
	DY ←  SIN(PHI);
	DZ ←  COS(PSI);
	DPYSET(DPYBUF);
	AIVECT(0,0);
	XXOLD←0;
	DW ←(2*π-A1)/21;
	FOR W ← A1-π STEP  DW UNTIL π-A1 DO
	BEGIN
		KK ← -(R1*SIN(W))/(DY*COS(W)+DX*SIN(W));
		ZZ ← KK*DZ;
		XXOLD←XX;
		XX ← R1*COS(W) + KK*(DX*COS(W) - DY*SIN(W)) + S1;
		IF XX*XXOLD≤0 THEN
		AIVECT(XX*SCALE,(ZZ-6)*SCALE);
		AVECT(XX*SCALE,(ZZ-6)*SCALE);
	END;
	DPYOUT(1);
END;
	PHIPSI(QANG[1,1],QANG[5,1],QANG[3,1]);
	PHI ← PHI - A1/2;
	SCALE ← 35;

BEGIN
	REAL DW,DX,DY,DZ,XX,ZZ,KK,W,W0,XXOLD;
	DX ← -COS(PHI);
	DY ←  SIN(PHI);
	DZ ←  COS(PSI);
	DPYSET(DPYBUF);
	AIVECT(0,0);
	XXOLD←0;
	DW ←(2*π-A1)/21;
	FOR W ← A1-π STEP  DW UNTIL π-A1 DO
	BEGIN
		KK ← -(R1*SIN(W))/(DY*COS(W)+DX*SIN(W));
		ZZ ← KK*DZ;
		XXOLD←XX;
		XX ← R1*COS(W) + KK*(DX*COS(W) - DY*SIN(W)) + S1;
		IF XX*XXOLD≤0 THEN
		AIVECT(XX*SCALE,(ZZ-6)*SCALE);
		AVECT(XX*SCALE,(ZZ-6)*SCALE);
	END;
	DPYOUT(2);
END;
	PHIPSI(QANG[1,2],QANG[4,2],QANG[2,2]);
	PHI ← PHI - A2/2;
	SCALE ← 35;

BEGIN
	REAL DW,DX,DY,DZ,XX,ZZ,KK,W,W0,XXOLD;
	DX ← -COS(PHI);
	DY ←  SIN(PHI);
	DZ ←  COS(PSI);
	DPYSET(DPYBUF);
	AIVECT(0,0);
	XXOLD←0;
	DW ←(2*π-A2)/21;
	FOR W ← A2-π STEP  DW UNTIL π-A2 DO
	BEGIN
		KK ← -(R2*SIN(W))/(DY*COS(W)+DX*SIN(W));
		ZZ ← KK*DZ;
		XXOLD←XX;
		XX ← R2*COS(W) + KK*(DX*COS(W) - DY*SIN(W)) + S2;
		IF XX*XXOLD≤0 THEN
		AIVECT(XX*SCALE,(ZZ-6)*SCALE);
		AVECT(XX*SCALE,(ZZ-6)*SCALE);
	END;
	DPYOUT(3);
END;
	PHIPSI(QANG[1,2],QANG[5,2],QANG[3,2]);
	PHI ← PHI - A2/2;
	SCALE ← 35;

BEGIN
	REAL DW,DX,DY,DZ,XX,ZZ,KK,W,W0,XXOLD;
	DX ← -COS(PHI);
	DY ←  SIN(PHI);
	DZ ←  COS(PSI);
	DPYSET(DPYBUF);
	AIVECT(0,0);
	XXOLD←0;
	DW ←(2*π-A2)/21;
	FOR W ← A2-π STEP  DW UNTIL π-A2 DO
	BEGIN
		KK ← -(R2*SIN(W))/(DY*COS(W)+DX*SIN(W));
		ZZ ← KK*DZ;
		XXOLD←XX;
		XX ← R2*COS(W) + KK*(DX*COS(W) - DY*SIN(W)) +S2;
		IF XX*XXOLD≤0 THEN
		AIVECT(XX*SCALE,(ZZ-6)*SCALE);
		AVECT(XX*SCALE,(ZZ-6)*SCALE);
	END;
	DPYOUT(4);
END;

	WHILE TRUE DO INCHRW;
END;